#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include"Tool.hpp"
#include"Task.hpp"

#define N 10

int main()
{
    Tool tool;
    tool.PushFunc(DownLoad);
    tool.PushFunc(PrintLog);
    tool.PushFunc(FlushDate);
    pid_t id=fork();
    if(id==0)
    {
        int cnt=10;
        while(cnt--)
        {
            printf("我是一个子进程:%d\n",cnt);
            sleep(1);
        }
        exit(0);
    }
   
    //父进程轮巡等待
    while(1)
    {
        pid_t rid=waitpid(id,NULL,WNOHANG);
        if(rid==id)
        {
            printf("wait child success\n");
            break;
        }
        else if(rid ==0)
        {
            printf("child not quit\n");
            //做其他的事
            tool.Execute();
            sleep(1);
        }
        else if(rid<0)
        {
            printf("wait error");
            break;
        }
    }
    return 0;
}

//int main()
//{
//    pid_t id=fork();
//    if(id==0)
//    {
//        int cnt=3;
//        while(cnt)
//        {
//            cnt--;
//            printf("子进程：%d\n",getpid());
//            sleep(1);
//        }
//        exit(10);
//    }
//
//    int status=0;
//    pid_t rid=waitpid(-1,&status,0);
//    if(rid>0)
//    {
//        printf("wait success\n");
//        if(WIFEXITED(status))
//        {
//            printf("正常运行结束：%d\n",WEXITSTATUS(status));
//        }
//        else{
//            printf("进程异常了\n");
//        }
//    }
//}
